package com.jiyun.jiyunmall.ware.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jiyun.jiyunmall.common.dto.ware.SkuHasStockDTO;
import com.jiyun.jiyunmall.common.service.impl.CrudServiceImpl;
import com.jiyun.jiyunmall.ware.dao.WareSkuDao;
import com.jiyun.jiyunmall.ware.dto.WareSkuDTO;
import com.jiyun.jiyunmall.ware.entity.WareSkuEntity;
import com.jiyun.jiyunmall.ware.service.WareSkuService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 商品库存
 *
 * @author boge 71164376@qq.com
 * @since 1.0.0 2022-07-12
 */
@Service
public class WareSkuServiceImpl extends CrudServiceImpl<WareSkuDao, WareSkuEntity, WareSkuDTO> implements WareSkuService {

    @Override
    public QueryWrapper<WareSkuEntity> getWrapper(Map<String, Object> params){
        String id = (String)params.get("id");

        QueryWrapper<WareSkuEntity> wrapper = new QueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(id), "id", id);


        return wrapper;
    }

    @Autowired
    WareSkuDao wareSkuDao;

    @Override
    public List<SkuHasStockDTO> getSkusHasStock(List<Long> skuIds) {
        // 根据ids 做一个in语句，where skuId in (1,2,3,4,5)
        QueryWrapper<WareSkuEntity> qw = new QueryWrapper<>();
        // select * from ware_sku where sku_id in (1,2,3,4,5)
        qw.in("sku_id",skuIds);
        List<WareSkuEntity> wareSkuEntities = wareSkuDao.selectList(qw);
        List<SkuHasStockDTO> collect = wareSkuEntities.stream().map(wareSku -> {
            SkuHasStockDTO skuHasStockDTO = new SkuHasStockDTO();
            skuHasStockDTO.setSkuId(wareSku.getSkuId());
            skuHasStockDTO.setHasStock(wareSku.getStock() > 0);
            return skuHasStockDTO;
        }).collect(Collectors.toList());
        return collect;
    }
}